#ifndef STRING_H
#define STRING_H

#include "memory.h"
#include "print.h"

/* Gibt die Länge eines Strings zurück
 * Parameter: char-Array
 * Rückgaben: Stringlänge
 */
int strlen (const char *);

/* Kopiert einen String in einen anderen und überschreibt diesen dadurch
 * Parameter: Zielstring, Quellstring
 * Rückgaben: Pointer auf den Zielstring
 */
char *strcpy (char *, const char *);

/* Kopiert einen String hinter einen anderen und hängt ihn damit an diesen an
 * Parameter: Zielstring, Quellstring
 * Rückgaben: Pointer auf den Zielstring
 */
char *strcat (char *, const char *);

/* Vergleicht zwei Strings
 * Parameter: String 1, String 2
 * Rückgaben: Wenn beide Strings gleich sind TRUE, ansonsten FALSE
 */
BOOL _strcmp (const char *, const char *);

/* Durchsucht einen String nach einen anderen
 * Parameter: Suchstring, Teilstring
 * Rückgaben: Wenn Teilstring in Suchstring gefunden wurde ein Pointer auf diese Adresse, ansonsten NULL
 */
char *strstr (const char *, const char *);

/* Durchsucht einen String nach einem einzelnen Zeichen
 * Parameter: Suchstring, das gesuchte Zeichen
 * Rückgaben: Bei Fund einen Pointer der auf den Fundort zeigt, ansonsten NULL
 */
char *strchr (char *, int);

/* Sucht nach einem einzelnen Zeichen in einem Bereich
 * Parameter: Suchstring, Bereich anfang, Bereich ende
 * Rückgaben: Bei Fund einen Pointer der auf den Fundort zeigt, ansonsten NULL
 */
char *strfind (char *, char, char);

/* Spaltet einen String
 * Parameter: Zeiger auf einen char-Array, Zeiger auf einen integer (enthält nach dem Aufruf die Anzahl der Elemente)
 * Rückgaben: Zeiger auf einen char**
 */
char **strsplit (const char *str, int *elements);

/* Gibt einen Füllstring zurück
 * Parameter: Füllzeichen, Länge des Strings, Ausgabepuffer
 * Rückgaben: Ausgabepuffer
 */
char * fill (char, int, char *);

/* Gibt einen Speicherbereich wie in einen HexViewer aus
 * Parameter: Pointer auf einen Speicherbereich, Ausgabenlänge
 * Rückgaben: Keine
 */
void dump_hex (void *, int);

#endif
